package com.zhq.apputil.widget.head;

import android.animation.Animator;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * @author ZHQ
 * @create 2019/3/22
 * @Describe
 */
public interface DragHeaderImpl {

    View getView(LayoutInflater inflater, ViewGroup viewGroup);

    View getHeadView(LayoutInflater inflater, ViewGroup viewGroup, Animator.AnimatorListener listener);

    void onPreDrag(View rootView);
    /**
     * 手指拖动控件过程中的回调，用户可以根据拖动的距离添加拖动过程动画
     * @param dy 拖动距离，下拉为+，上拉为-
     * @param totalMoveDy 拖动的总距离临节点
     */
    void onDropAnim(View rootView, int dy, int totalMoveDy);
    /**
     * 手指拖动控件过程中每次抵达临界点时的回调，用户可以根据手指方向设置临界动画
     * @param upOrDown 是上拉还是下拉
     */
    void onLimitDes(View rootView, boolean upOrDown);

    /**
     * 拉动超过临界点后松开时回调
     */
    void onStartAnim();

    /**
     * 头(尾)已经全部弹回时回调
     * @param refreshOk  是否刷新成功
     */
    void onFinishAnim(boolean refreshOk);
}
